Software products such as operating systems and application programs often contain materials that are protected under copyright law, which grants the author of a piece of original work (e.g., software code) exclusive rights over the usage and distribution of the work. To obtain a copy of a software product from a vendor who owns rights to that software product, a user typically enters into a license agreement with the vendor, which governs how the user may use and/or distribute the software product. For example, the license agreement may restrict the number of times a user can install the software and/or the number of computers on which the software can be installed.
An “activation” process is often completed when an attempt is made to install a copy of a software product. This process may be designed to determine whether the copy is authorized for installation (e.g., whether the copy was legitimately purchased by the user) and/or whether the installation is in compliance with one or more applicable license agreements (e.g., whether the user has exceeded a maximum number of permitted installations). Some conventional software activation techniques use a “product key,” which is a piece of information made available to a user when the user legitimately purchases or otherwise legitimately obtains a copy of a software product.
The product key is typically tied to a single edition of software. For example, where a software product is offered in multiple editions (e.g., professional and home editions), the product key allows the user to install only the edition unlocked by the product key. During the activation process, the user provides the product key, which when accepted or validated, gives the user permission to complete the installation. Thus, the copy of the software product acquired by the user is installed on the user's computer. However, if the product key does not match the copy of the software product acquired by the user, then the installation is not allowed to continue, and the user must acquire the appropriate edition of software that matches the product key in order to complete the installation properly.
Each edition of the software product, which is enabled by a corresponding product key, has a separate installation program offering different sets of features within the installed program. Thus, a home or more basic edition of a software product that has a different set of features in its installed program than a professional or more advanced edition of the software product will correspondingly have a different installation program than the professional edition. Some of the features between the editions may overlap, but others may only be offered in their respective edition. To offer a third edition offering yet another distinct set of features than those offered by the home or professional editions, a third installation program is required to install the appropriate features. Accordingly, under such a scenario, even a slight change in the number of offered features in one edition versus another causes a new product key/installation program pair to be created.
Overview
Examples discussed herein relate to activation of a set or subset of features of a full feature set of a software product installed without a product key when the software product is launched. In an implementation, a computing apparatus comprises one or more computer readable storage media, a processing system operatively coupled with the one or more computer readable storage media, and program instructions stored on the one or more computer readable storage media for authenticating a user license for an application after the application has launched. When executed by the processing system, the program instructions direct the processing system to at least, responsive to a launch of the application, obtain a license file for the application, the license file comprising a license data structure that includes: a user license; a licensing service signature; a licensing service public key; and a trusted timestamp package. The processing system is further directed to verify validity of the licensing service public key. If the licensing service public key is invalid, the license data structure is analyzed using the trusted timestamp package to determine if the licensing service public key was valid when the user license was signed by the licensing service signature. If the licensing service public key was valid when the user license was signed by the licensing service signature, the processing system is further directed to enable features of the application based on the user license and initiate presentation of the application in accordance with the enabled features.
In another implementation, a method for authenticating a user license for an application after the application has launched comprises, responsive to a launch of the application, obtaining a license file for the application, the license file having a license data structure that includes: a user license; a licensing service signature; a licensing service public key; and a trusted timestamp package. The method also includes verifying validity of the licensing service public key. If the licensing service public key is invalid, the license data structure is analyzed using the trusted timestamp package to determine if the licensing service public key was valid when the user license was signed by the licensing service signature. If the licensing service public key was valid when the user license was signed by the licensing service signature, the method further includes enabling features of the application based on the user license and initiating presentation of the application in accordance with the enabled features.
In another implementation, one or more computer readable storage media having program instructions stored thereon for authenticating a user license for an application after the application has launched, wherein the program instructions, when executed by a processing system, direct the processing system to at least obtain a license file comprising a license file for an application responsive to a launch of the application, the license file comprising a license data structure that includes a user license; a licensing service signature; a licensing service public key; and a trusted timestamp package. The license data structure is analyzed using the trusted timestamp package to determine if the licensing service public key was valid when the user license was signed by the licensing service signature. If the licensing service public key was valid when the user license was signed by the licensing service signature, processing system is further directed to enable features of the application based on the user license and initiate presentation of the application in accordance with the enabled features.
This Overview is provided to introduce a selection of concepts in a simplified form that are further described below in the Detailed Description. It may be understood that this Overview is not intended to identify key features or essential features of the claimed subject matter, nor is it intended to be used to limit the scope of the claimed subject matter.